//  引入 express
const formidable = require('formidable');
const express = require('express');
const path = require('path');
const fs = require('fs')
// 引入暴露模块
const userRouter = require('./routes/user.js')
const dynamicRouter = require('./routes/dynamic.js')
const clockRouter = require('./routes/clock.js')

// 加载CORS模块
const cors = require('cors');
// 使用 express
const app = express()
app.all("*", function (req, res, next) {
    //设置允许跨域的域名，*代表允许任意域名跨域
    res.header("Access-Control-Allow-Origin", "*");
    //允许的header类型
    res.header("Access-Control-Allow-Headers", "Origin,X-Requested-With,Accept,Content-type");
    res.header("Access-Control-Allow-Credentials", true);
    //跨域允许的请求方式
    res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
    res.header("Content-Type", "application/json;charset=utf-8")
    if (req.method.toLowerCase() == 'options')
        res.sendStatus(200);  //让options尝试请求快速结束
    else 
        next();
});

app.use(express.static(__dirname+'/public'))
// app.use(express.static(__dirname+'/public/username'))
app.post('/v1/users/upload', (req, res) => {
    // 创建formidable表单解析对象
    const form = formidable({ multiples: true, uploadDir: path.join(__dirname, 'public','imgcontent'), keepExtensions: true })
    //解析客户端传过来的FormData对象
    form.parse(req, (err, fields, files) => {
        res.send({code: 200,data:files});
    })
})
app.post('/v1/users/image', (req, res) => {
    // 创建formidable表单解析对象
    const form = formidable({ multiples: true, uploadDir: path.join(__dirname, 'public','userimg'), keepExtensions: true })
    //解析客户端传过来的FormData对象
    form.parse(req, (err, fields, files) => {
        res.send({code: 200,data:files});
    })
})


// 解析表单传递的json数据, 为req.body使用
app.use(express.urlencoded({
    extended: true
}))

// 使用CORS中间件
app.use(cors({
    origin:'*',
    // origin: ['http://localhost:8080', 'http://127.0.0.1:8080']

}));


// 使用路由中间件
app.use('/v1/users', userRouter)
app.use('/v1/users', dynamicRouter)
app.use('/v1/users', clockRouter)
// 添加错误处理中间件, 拦截路由中传递的错误
app.use((err, req, res, next) => {
    // err 传递过来的错误
    console.log(err)
    // 响应服务器错误
    res.send({ code: 500, msg: '服务器端错误' })
})

// 创建 8888 接口
app.listen(8888, () => {
    console.log('服务器已启动')  //提示服务器是否启动
})


